home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_70 / waveinfo.c < prev    next >
Text File  |  1995-01-01  |  3KB  |  110 lines

  1.  
  2. //------------------------------------------------------------------------------
  3. // Copyright (c) David Welch, 1993
  4. //------------------------------------------------------------------------------
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10. unsigned char min;
  11. unsigned char max;
  12. unsigned char ca;
  13. unsigned short ra;
  14. unsigned long la;
  15. FILE *fp;
  16. char gstring[80];
  17. unsigned long rID;
  18. unsigned long rLen;
  19. unsigned long wID;
  20. unsigned long fID;
  21. unsigned long fLen;
  22. unsigned long fNext;
  23. unsigned short wFormatTag;
  24. unsigned short nChannels;
  25. unsigned short nSamplesPerSec;
  26. unsigned short nAvgBytesPerSec;
  27. unsigned long dID;
  28. unsigned long dLen;
  29.  
  30. //------------------------------------------------------------------------------
  31. void main ( int argc, char *argv[] )
  32. {
  33.     if(argc==1)
  34.     {
  35.         printf(".WAV file not specified\n");
  36.         exit(1);
  37.     }
  38.     strcpy(gstring,argv[1]);
  39.     strcat(gstring,".WAV");
  40.     if((fp=fopen(gstring,"rb"))==0)
  41.     {
  42.         strcpy(gstring,argv[1]);
  43.         if((fp=fopen(gstring,"rb"))==0)
  44.         {
  45.             printf("Error opening .WAV file [%s]\n",argv[1]);
  46.             exit(1);
  47.         }
  48.     }
  49.     printf("FILE:  [%s]\n",gstring);
  50.     fread(&rID,1,4,fp);
  51.     if(rID!=0x46464952)
  52.     {
  53.         printf("Not a RIFF format file\n");
  54.         exit(1);
  55.     }
  56.     fread(&rLen,1,4,fp);
  57.     printf("rLen = %lu\n",rLen);
  58.     fread(&wID,1,4,fp);
  59.     if(wID!=0x45564157)
  60.     {
  61.         printf("Not a WAVE format chunk\n");
  62.         exit(1);
  63.     }
  64.     fread(&fID,1,4,fp);
  65.     if(fID!=0x20746D66)
  66.     {
  67.         printf("Not a fmt WAVE Format Chunk\n");
  68.         exit(1);
  69.     }
  70.     fread(&fLen,1,4,fp);
  71.     fNext=fLen+ftell(fp);
  72.     printf("fLen %lu\n",fLen);
  73.     printf("fNext %lu\n",fNext);
  74.     fread(&wFormatTag,1,2,fp);
  75.     if(wFormatTag!=1)
  76.     {
  77.         printf("Data is not PCM\n");
  78.     }
  79.     fread(&nChannels,1,2,fp);
  80.     printf("nChannels %u\n",nChannels);
  81.     fread(&nSamplesPerSec,1,2,fp);
  82.     printf("nSamplesPerSec %u\n",nSamplesPerSec);
  83.     fread(&nAvgBytesPerSec,1,2,fp);
  84.     printf("nAvgBytesPerSec %u\n",nAvgBytesPerSec);
  85.  
  86.     fseek(fp,fNext,0);
  87.     fread(&dID,1,4,fp);
  88.     if(dID!=0x61746164)
  89.     {
  90.         printf("Not a DATA chunk\n");
  91.         exit(1);
  92.     }
  93.     fread(&dLen,1,4,fp);
  94.     printf("dLen %lu\n",dLen);
  95.     min=0xFF;
  96.     max=0x00;
  97.     for(la=0;la<dLen;la++)
  98.     {
  99.         fread(&ca,1,1,fp);
  100.         if(ca>max) max=ca;
  101.         if(ca<min) min=ca;
  102.     }
  103.     printf("max %u\n",(unsigned char)max);
  104.     printf("min %u\n",(unsigned char)min);
  105. }
  106. //------------------------------------------------------------------------------
  107. // Copyright (c) David Welch, 1993
  108. //------------------------------------------------------------------------------
  109.  
  110.